home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 46
/
Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso
/
-in_the_mag-
/
reader_requests
/
scilab
/
bin
/
f77-linux
< prev
next >
Wrap
Text File
|
1999-09-16
|
4KB
|
208 lines
#!/bin/sh
PATH=/v/bin:/bin:/usr/bin
# f77-style shell script to compile and load fortran, C, and assembly codes
# usage: f77 [-g] [-O|-O2|-O6] [-o absfile] [-c] files [-l library]
# -o objfile Override default executable name a.out.
# -c Do not call linker, leave relocatables in *.o.
# -S leave assembler output on file.s
# -l library (passed to ld).
# -u complain about undeclared variables
# -w omit all warning messages
# -w66 omit Fortran 66 compatibility warning messages
# files FORTRAN source files ending in .f .
# C source files ending in .c .
# Assembly language files ending in .s .
# efl source files ending in .e .
# -I includepath passed to C compiler (for .c files)
# -Ntnnn allow nnn entries in table t
# -cpp -Dxxx pipe through cpp
# bugs fixed by Scilab Group
s=/tmp/stderr_$$
t=/tmp/f77_$$
CC=${CC_f2c:-'/usr/bin/cc -m486'}
EFL=${EFL:-/v/bin/efl}
EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
F2C=${F2C:-/usr/bin/f2c}
F2CFLAGS=${F2CFLAGS:='-ARw8 -Nn802'}
rc=0
lib=/lib/num/lib.lo
trap "rm -f $s ; exit \$rc" 0
OUTF=a.out
cOPT=1
G=
CPP=/bin/cat
CPPFLAGS=
# set -- `getopt cD:gI:N:Oo:Suw6 "$@"`
case $? in 0);; *) exit 1;; esac
ARGS=
while
test -n "$1"
do
case "$1"
in
-c) cOPT=0
shift
;;
-D) CPPFLAGS="$CPPFLAGS -D$2"
shift 2
;;
-D*) CPPFLAGS="$CPPFLAGS $1"
shift 1
;;
-g) CFLAGS="$CFLAGS -g"
F2CFLAGS="$F2CFLAGS -g"
G="-g"
shift;;
-I) CFLAGS="$CFLAGS -I$2"
shift 2
;;
-I*) CFLAGS="$CFLAGS $1"
shift 1
;;
-o) OUTF=$2
shift 2
;;
-O|-O1|-O2|-O6)
CFLAGS="$CFLAGS $1"
shift
;;
-u) F2CFLAGS="$F2CFLAGS -u"
shift
;;
-w) F2CFLAGS="$F2CFLAGS -w"
case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift
case $2 in -6) shift;; esac;; esac
shift
;;
-N) F2CFLAGS="$F2CFLAGS $1""$2"
shift 2
;;
-N*|-C) F2CFLAGS="$F2CFLAGS $1"
shift 1
;;
-cpp) CPP="/lib/cpp -traditional"
shift 1
;;
-S) CFLAGS="$CFLAGS -S"
cOPT=0
shift
;;
*) ARGS="$ARGS $1"
shift 1
;;
esac
done
if test $cOPT = 0; then
if test "$OUTF" != "a.out"; then
CFLAGS="-o $OUTF $CFLAGS"
fi
fi
set -- $ARGS
while
test -n "$1"
do
case "$1"
in
*.[fF])
case "$1" in *.f) f=".f";; *.F) f=".F";; esac
b=`basename $1 $f`
trap "rm -f f2ctmp_$b.* ; exit 0" 0
sed 's/\\$/\\-/;
s/^ *INCLUDE *'\(.*\)'.*$/#include "\1"/' $1 |\
$CPP $CPPFLAGS |\
egrep -v '^# ' > f2ctmp_$b.f
trap "rm -f f2ctmp_$b.* ; exit 0" 0
$F2C $F2CFLAGS f2ctmp_$b.f
case $? in 0);; *) rm f2ctmp_* ; exit 5;; esac
rm -f f2ctmp_$b.f
mv f2ctmp_$b.c $b.c
if [ -f f2ctmp_$b.P ]; then mv f2ctmp_$b.P $b.P; fi
case $? in 0);; *) rm -f $b.c ; exit 5;; esac
trap "rm -f $s ; exit 0" 0
$CC $CPPFLAGS -c $CFLAGS $b.c 2>$s
rc=$?
sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2
case $rc in 0);; *) exit 5;; esac
rm -f $b.c
OFILES="$OFILES $b.o"
case $cOPT in 1) cOPT=2;; esac
shift
;;
*.e)
b=`basename $1 .e`
$EFL $EFLFLAGS $1 >$b.f
case $? in 0);; *) exit;; esac
$F2C $F2CFLAGS $b.f
case $? in 0);; *) exit;; esac
$CC -c $CFLAGS $b.c
case $? in 0);; *) exit;; esac
OFILES="$OFILES $b.o"
rm $b.[cf]
case $cOPT in 1) cOPT=2;; esac
shift
;;
*.s)
echo $1: 1>&2
OFILE=`basename $1 .s`.o
${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1
case $? in 0);; *) exit;; esac
OFILES="$OFILES $OFILE"
case $cOPT in 1) cOPT=2;; esac
shift
;;
*.c)
echo $1: 1>&2
OFILE=`basename $1 .c`.o
$CC -c $CFLAGS $CPPFLAGS $1
rc=$?; case $rc in 0);; *) exit;; esac
OFILES="$OFILES $OFILE"
case $cOPT in 1) cOPT=2;; esac
shift
;;
*.o)
OFILES="$OFILES $1"
case $cOPT in 1) cOPT=2;; esac
shift
;;
-l)
OFILES="$OFILES -l$2"
shift 2
case $cOPT in 1) cOPT=2;; esac
;;
-l*)
OFILES="$OFILES $1"
shift
case $cOPT in 1) cOPT=2;; esac
;;
-o)
OUTF=$2; shift 2;;
*)
OFILES="$OFILES $1"
shift
case $cOPT in 1) cOPT=2;; esac
;;
esac
done
case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac
rc=$?
exit $rc